package Test1.GeneralFunction;

import Test1.HCNetSDK;
import com.sun.jna.Pointer;

import java.util.Scanner;

/**
 * Created by panting6 on 2021/9/17.
 */
public class Alarm {
    static HCNetSDK hCNetSDK = HCNetSDK.INSTANCE;
    public static HCNetSDK.FMSGCallBack fMSFCallBack;//报警回调函数实现
    public static HCNetSDK.FMSGCallBack_V31 fMSFCallBack_V31;//报警回调函数实现
    public int lAlarmHandle = -1;//布防句柄

    public int SetupAlarmChan(int lUserID, int lAlarmHandle) {
        if (lUserID == -1) {
            System.out.println("请先注册");
            return -1;
        }
        if (lAlarmHandle < 0)//尚未布防,需要布防
        {
            if (fMSFCallBack_V31 == null) {
                fMSFCallBack_V31 = new FMSGCallBack_V31();
                Pointer pUser = null;
                if (!hCNetSDK.NET_DVR_SetDVRMessageCallBack_V31(fMSFCallBack_V31, pUser)) {
                    System.out.println("设置回调函数失败!");
                }
            }
            HCNetSDK.NET_DVR_SETUPALARM_PARAM m_strAlarmInfo = new HCNetSDK.NET_DVR_SETUPALARM_PARAM();
            m_strAlarmInfo.dwSize = m_strAlarmInfo.size();
            m_strAlarmInfo.byLevel = 1;//智能交通布防优先级：0- 一等级（高），1- 二等级（中），2- 三等级（低）
            m_strAlarmInfo.byAlarmInfoType = 1;//智能交通报警信息上传类型：0- 老报警信息（NET_DVR_PLATE_RESULT），1- 新报警信息(NET_ITS_PLATE_RESULT)
            m_strAlarmInfo.byDeployType = 1; //布防类型(仅针对门禁主机、人证设备)：0-客户端布防(会断网续传)，1-实时布防(只上传实时数据)
            m_strAlarmInfo.write();
            lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo);
            if (lAlarmHandle == -1) {
                System.out.println("布防失败，错误号:" + hCNetSDK.NET_DVR_GetLastError());
            } else {
                System.out.println("布防成功");

                while (true) {
                    //这里加入控制台输入控制，是为了保持连接状态，当输入Y表示布防结束
                    System.out.print("请选择是否撤出布防(Y/N)：");
                    Scanner input = new Scanner(System.in);
                    String str = input.next();
                    if (str.equals("Y")) {
                        return lAlarmHandle;
                    }
                }
            }
        }
        return lAlarmHandle;
    }

    /**
     * 报警撤防
     *
     * @param lAlarmHandle 报警布防句柄
     */
    public void CloseAlarmChan(int lAlarmHandle) {
        //报警撤防
        if (lAlarmHandle > -1) {
            if (hCNetSDK.NET_DVR_CloseAlarmChan_V30(lAlarmHandle)) {
                System.out.println("撤防成功！");
            }
        }
    }



}
